home *** CD-ROM | disk | FTP | other *** search
/ Apple II Magazines (PO) / Nibble Volume 11, No. 01 (1990-01)(MindCraft Publishing)(Side A).zip / Nibble Volume 11, No. 01 (1990-01)(MindCraft Publishing)(Side A).po / BASICS.ASM.txt < prev    next >
Text File  |  1996-12-24  |  12KB  |  313 lines

  1. *****************************************************************
  2. *
  3. * BASICS.ASM Source Code
  4. * by Sandy Mossberg
  5. * Copyright(c) 1989
  6. * MindCraft Publ. Corp.
  7. * Concord, MA 01742
  8. ****************************************************************
  9. *
  10. StartUp     start
  11. *
  12. * Startup tool sets:
  13. *
  14. * Exit: CC = no error, CS = abort program
  15. *
  16. *****************************************************************
  17.             using    GlobalData
  18. ;
  19. ; DPHndl and DPPtr equated in main program.
  20. ;
  21. ; Calculate direct page space for tool sets:
  22. ;
  23. QDDPage     equ      $0000           ;DP offests: QuickDraw II.....3 pages
  24. EMDPage     equ      QDDPage+$300    ;            Event Manager....1 page
  25. CtlDPage    equ      EMDPage+$100    ;            Control Manager..1 page
  26. MenuDPage   equ      CtlDPage+$100   ;            Menu Manager.....1 page
  27. LEDPage     equ      MenuDPage+$100  ;            LineEdit.........1 page
  28. SFDPage     equ      LEDPage+$100    ;            Standard File....1 page
  29. FontDPage   equ      SFDPage+$100    ;            Font Manager.....1 page
  30. PrintDPage  equ      FontDPage+$100  ;            Print Manager....2 pages
  31. SANEDPage   equ      PrintDPage+$200 ;            SANE.............1 page
  32. DPageSize   equ      SANEDPage+$100  ;size of direct page space required
  33.  
  34. ; Startup first 3 tool sets:
  35.  
  36.             _TLStartUp               ;----start Tool Locator
  37.  
  38.             pha                      ;space for result
  39.             _MMStartUp               ;----start Memory Manager
  40.             jsr      HandlErr
  41.             PullWord MasterID        ;save master ID
  42.  
  43.             _MTStartUp               ;----start Miscellaneous Tools
  44.  
  45. ; Allocate direct page memory for tool sets:
  46.  
  47.             PushLong #0              ;space for result
  48.             PushLong #DPageSize      ;size of direct page space
  49.             PushWord MasterID        ;master ID
  50.             PushWord #$C005          ;locked, fixed, aligned, fixed bank
  51.             PushLong #0              ;bank $00 is the fixed bank
  52.             _NewHandle               ;allocate space
  53.             jsr      HandlErr
  54.             PullLong DPHndl          ;save handle to DP space
  55.             lda      [DPHndl]        ;dereference DP handle to obtain
  56.             sta      DPPtr           ; ptr (lo) to DP space
  57.  
  58. ; Startup other tool sets:
  59.  
  60.             PushWord DPPtr           ;ptr to direct page for Quickdraw II
  61.             PushWord #ScreenMode     ;640x200 super hi-res
  62.             PushWord #0              ;default pixel map is screen width
  63.             PushWord MasterID        ;master ID
  64.             _QDStartUp               ;----start QuickDraw II
  65.             jsr      HandlErr
  66.  
  67.             lda      DPPtr
  68.             clc
  69.             adc      #EMDPage
  70.             pha                      ;direct page for Event Manager
  71.             PushWord #0              ;default size of event queue is 20
  72.             PushWord #0              ;minimum X clamp value for mouse
  73.             PushWord #ScreenWidth    ;max X clamp is screen width
  74.             PushWord #0              ;minimum Y clamp value for mouse
  75.             PushWord #200            ;max Y clamp is screen height
  76.             PushWord MasterID        ;master ID
  77.             _EMStartUp               ;----start Event Manager
  78.             jsr      HandlErr
  79.  
  80. ; Print "One moment please..." message:
  81.  
  82.             PushWord #10             ;start in upper left corner of screen
  83.             PushWord #10
  84.             _MoveTo
  85.             PushWord #0              ;black background
  86.             _SetBackColor
  87.             PushWord #$0F            ;white text
  88.             _SetForeColor
  89.             PushLong #StrMoment
  90.             _DrawString
  91.             _ShowCursor              ;show cursor in case of boot volume mount
  92.  
  93. ; Load RAM-based tools:
  94.  
  95. FindBootVol _GetFileInfoGS GFIParm   ;look for boot tools directory
  96.             bcc      LoadTools       ;boot volume online
  97.             jsr      MountBoot       ;no boot volume so mount it
  98.             bcc      FindBootVol     ;user mounted boot volume--check it
  99.             jsr      ShutDown1       ;shutdown tools we started up
  100.             sec                      ;CS = signal program abortion
  101.             rts
  102.  
  103. LoadTools   PushLong #ToolTable      ;ptr to tool table
  104.             _LoadTools               ;load all tools in table
  105.             jsr      HandlErr
  106.  
  107. ; Continue to start tool sets:
  108.  
  109.             PushWord MasterID        ;master ID
  110.             _WindStartUp             ;----start Window Manager
  111.  
  112.             PushWord MasterID        ;master ID
  113.             lda      DPPtr
  114.             clc
  115.             adc      #CtlDPage
  116.             pha                      ;direct page for Control Manager
  117.             _CtlStartUp              ;----start Control Manager
  118.  
  119.             PushWord MasterID        ;master ID
  120.             lda      DPPtr
  121.             clc
  122.             adc      #MenuDPage
  123.             pha                      ;direct page for Menu Manager
  124.             _MenuStartUp             ;----start Menu Manager
  125.  
  126.             PushWord MasterID        ;master ID
  127.             lda      DPPtr
  128.             clc
  129.             adc      #LEDPage
  130.             pha                      ;direct page for LineEdit
  131.             _LEStartUp               ;----start LineEdit
  132.             jsr      HandlErr
  133.  
  134.             PushWord MasterID        ;master ID
  135.             _DialogStartUp           ;----start Dialog Manager
  136.  
  137.             PushWord MasterID        ;master ID
  138.             lda      DPPtr
  139.             clc
  140.             adc      #SFDPage
  141.             pha                      ;direct page for Standard File
  142.             _SFStartUp               ;----start Standard Files
  143.  
  144.             _ScrapStartUp            ;----start Scrap Manager
  145.             _DeskStartUp             ;----start Desk Manager
  146.             _ListStartUp             ;----start List Manager
  147.  
  148.             PushWord MasterID        ;master ID
  149.             lda      DPPtr
  150.             clc
  151.             adc      #FontDPage
  152.             pha                      ;direct page for Font Manager
  153.             _FMStartUp               ;----start Font Manager
  154.             jsr      HandlErr
  155.  
  156.             PushWord MasterID        ;master ID
  157.             lda      DPPtr
  158.             clc
  159.             adc      #PrintDPage
  160.             pha                      ;direct pages for Print Manager
  161.             _PMStartUp               ;----start Print Manager
  162.             jsr      HandlErr
  163.  
  164.             lda      DPPtr
  165.             clc
  166.             adc      #SANEDPage
  167.             pha                      ;direct page for SANE
  168.             _SANEStartUp             ;----start SANE
  169.  
  170.             _SchStartUp              ;----start Scheduler
  171.             _ADBStartUp              ;----start Apple Desktop Bus
  172.             _QDAuxStartUp            ;----start QuickDraw II Auxiliary
  173.             _IMStartUp               ;----start Integer Math
  174.             _TextStartUp             ;----start Text
  175.             rts                      ;CC = signal program continuation
  176. ;................................................................
  177. ;
  178. ; StartUp data:
  179. ;
  180. GFIParm     anop                     ;GetFileInfo parmlist (GS/OS class 1)
  181.             dc       i2'2'           ;pCount = 2
  182.             dc       i4'ToolsPath'   ;ptr to tools boot directory (input)
  183.             ds       2               ;access (result)
  184.  
  185. ToolsPath   anop                            ;GFI input string (GS/OS class 1)
  186.             dc       i2'TPEnd-ToolsPath-2'  ;length word
  187.             dc       c'*/SYSTEM/TOOLS/'     ;pathname chars
  188. TPEnd       anop
  189.  
  190. StrMoment   str      '   One moment please...'
  191.  
  192. ToolTable   anop                     ;RAM tools to load (System Disk 4.0+)
  193.             dc       i2'TTSize/4'    ;number of tool sets
  194.             dc       i2'$0E,$0203'   ;Window Manager
  195.             dc       i2'$0F,$0202'   ;Menu Manager
  196.             dc       i2'$10,$0206'   ;Control Manager
  197.             dc       i2'$12,$0205'   ;QuickDraw Auxiliary
  198.             dc       i2'$13,$0202'   ;Print Manager
  199.             dc       i2'$14,$0202'   ;LineEdit
  200.             dc       i2'$15,$0203'   ;Dialog Manager
  201.             dc       i2'$16,$0104'   ;Scrap Manager
  202.             dc       i2'$17,$0202'   ;Standard File Operations
  203.             dc       i2'$1B,$0204'   ;Font Manager
  204.             dc       i2'$1C,$0203'   ;List Manager
  205. TTSize      equ      *-ToolTable-2   ;number of table bytes (-2 number bytes)
  206.             end
  207.  
  208. *****************************************************************
  209. *
  210. ShutDown    start
  211. *
  212. * Shutdown tools sets:
  213. *
  214. * Entry: ShutDown1 - shutdown tool sets if program aborted
  215. *
  216. *****************************************************************
  217.             using    GlobalData
  218.  
  219.             _TextShutDown            ;shutdown tools in reverse
  220.             _IMShutDown              ; order of their startup
  221.             _QDAuxShutDown
  222.             _ADBShutDown
  223.             _SchShutDown
  224.             _SANEShutDown
  225.             _PMShutDown
  226.             _FMShutDown
  227.             _ListShutDown
  228.             _DeskShutDown
  229.             _ScrapShutDown
  230.             _SFShutDown
  231.             _DialogShutDown
  232.             _LEShutDown
  233.             _MenuShutDown
  234.             _CtlShutDown
  235.             _WindShutDown
  236.  
  237. ShutDown1   entry                    ;shutdown tool sets if program aborted
  238.             _EMShutDown
  239.             _QDShutDown
  240.             PushLong DPHndl          ;handle to direct page space
  241.             _DisposeHandle           ;deallocate direct page space
  242.  
  243.             _MTShutDown
  244.             PushWord MasterID        ;master ID
  245.             _MMShutDown
  246.             _TLShutDown
  247.             rts
  248.             end
  249.  
  250. *****************************************************************
  251. *
  252. HandlErr    start
  253. *
  254. * Check for error and handle fatal error:
  255. *
  256. *****************************************************************
  257.  
  258.             bcs      FatalErr        ;error detected
  259.             rts                      ;no error on carry clear
  260.  
  261. FatalErr    pha                      ;error code in A reg
  262.             PushLong #0              ;use default failure message
  263.             _SysFailMgr              ;die a horrible death
  264.             end
  265.  
  266. *****************************************************************
  267. *
  268. MountBoot   start
  269. *
  270. * Mount boot volume:
  271. *
  272. * Exit: CC = continue, CS = abort program
  273. *
  274. *****************************************************************
  275.  
  276.             _GetBootVolGS GBVParm
  277.             jsr      HandlErr
  278.             lda      BVStr           ;convert from GS/OS class 1 input
  279.             xba                      ; string to standard P-string
  280.             sta      BVStr
  281.  
  282.             pha                      ;space fpr result
  283.             PushWord #185            ;upper left X coordinate
  284.             PushWord #50             ;upper left Y coordinate
  285.             PushLong #StrBootVol     ;ptr to prompt string
  286.             PushLong #BVStr+1        ;ptr to boot volume name string
  287.             PushLong #StrOk          ;ptr to button 1 string
  288.             PushLong #StrAbort       ;ptr to button 2 string
  289.             _TLMountVolume
  290.             pla                      ;button ID number
  291.  
  292.             cmp      #2
  293.             beq      Done            ;CS = abort button hit
  294.             clc                      ;CC = OK button hit
  295. Done        rts
  296. ;................................................................
  297. ;
  298. ; MountBoot data:
  299. ;
  300. GBVParm     anop                     ;GetBootVol parmlist (GS/OS class 1)
  301.             dc       i2'1'           ;pCount = 1
  302.             dc       i4'BVBuf'       ;ptr to volume name buffer (output)
  303.  
  304. BVBuf       anop                     ;boot volume path buffer (GS/OS class 1)
  305.             dc       i2'BVEnd-BVStr' ;buffer length
  306. BVStr       ds       19              ;input string
  307. BVEnd       anop
  308.  
  309. StrOk       str      'OK'
  310. StrAbort    str      'Abort'
  311. StrBootVol  str      'Insert the boot volume:'
  312.             end
  313.